package fr.techad.sonar.gerrit.network.ssh; import java.io.IOException; import org.sonar.api.utils.log.Logger; import org.sonar.api.utils.log.Loggers; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import fr.techad.sonar.GerritPluginException; import fr.techad.sonar.gerrit.GerritConnector; import fr.techad.sonar.gerrit.GerritFacade; public class GerritSshFacade extends GerritFacade { private static final Logger LOG = Loggers.get(GerritSshFacade.class); private static final String COMMIT_MSG = "/COMMIT_MSG"; private static final String ERROR_LISTING = "Error listing files"; public GerritSshFacade(GerritConnector gerritConnector) { super(gerritConnector); LOG.debug("[GERRIT PLUGIN] Instanciating GerritSshFacade"); } @Override protected void fillListFilesFomGerrit() throws GerritPluginException { try { String rawJsonString = getGerritConnector().listFiles(); JsonArray files = new JsonParser().parse(rawJsonString.split("\r?\n")[0]).getAsJsonObject() .getAsJsonObject("currentPatchSet").getAsJsonArray("files"); for (JsonElement jsonElement : files) { String fileName = jsonElement.getAsJsonObject().get("file").getAsString(); if (COMMIT_MSG.equals(fileName)) { continue; } JsonObject jsonObject = jsonElement.getAsJsonObject(); if (jsonObject.has("type") && isMarkAsDeleted(jsonObject)) { LOG.debug("[GERRIT PLUGIN] File is marked as deleted, won't comment."); continue; } addFile(fileName); } } catch (IOException e) { throw new GerritPluginException(ERROR_LISTING, e); } } private boolean isMarkAsDeleted(JsonObject jsonObject) { return "DELETED".equals(jsonObject.get("type").getAsString()); } }